package main

import "fmt"

// 适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式，它结合了两个独立接口的功能。

// Target 目标接口
type Target interface {
	Request() string
}

// Adaptee 适配者
type Adaptee struct{}

func (a *Adaptee) SpecificRequest() string {
	return "Adaptee: Specific request."
}

// Adapter 适配器
type Adapter struct {
	adaptee *Adaptee
}

func (a *Adapter) Request() string {
	return a.adaptee.SpecificRequest()
}

func main() {
	adaptee := &Adaptee{}
	// adapter := &Adapter{adaptee: adaptee}

	var adapter Target = &Adapter{adaptee: adaptee}
	fmt.Println(adapter.Request())
}
